home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / new_file / programm / a56 / a56.lzh / examples / pink.a56 < prev    next >
Encoding:
Text File  |  1994-09-02  |  2.4 KB  |  84 lines

  1. ; pink noise (1/f) generator
  2. ; (actually white noise into a one-pole low-pass filter)
  3. ; based on noise generator from Dr. Bubb but extended to 24 bits
  4. ; uses simple one-tap recursive filter
  5. ;
  6. ; written by: Quinn Jensen (jensenq@qcj.icon.com)
  7. ;
  8.  
  9. include "tdsg.a56"
  10. ;***************************************************************
  11. ;
  12. ;    sample rate computations
  13. ;
  14. ;***************************************************************
  15.  
  16. dot
  17.     org    x:$10
  18.  
  19. NSTATE  dc      1               ;STATE OF NOISE GENERATOR (SHIFT REG)
  20.  
  21.  
  22.     org    y:$0
  23.  
  24.     org    p:dot        ;go back to P-space
  25. ;
  26. ; non-interrupt code
  27. ;
  28.  
  29. hf_init
  30.         MOVE    #$FEEDEE,X0         ;INITIAL STATE OF NOISE GENERATOR
  31.         MOVE    X0,X:<NSTATE
  32.     rts
  33.  
  34. ;
  35. ; fs = 32.552083 kHz
  36. ;
  37.  
  38. hf_comp
  39.     jsr    <saveregs
  40.     jsr    NOISE
  41.     move        #.005,x1
  42.     move        #.990,y1
  43.     move        a,x0
  44.     mpyr    x0,x1,a    x:<out_l,x0
  45.     macr    x0,y1,a
  46.     move        a,x:<out_l
  47.     jsr    NOISE
  48.     move        a,x0
  49.     mpyr    x0,x1,a    x:<out_r,x0
  50.     macr    x0,y1,a
  51.     move        a,x:<out_r
  52.     jsr    <restregs
  53.     rts
  54.  
  55. ;       NOISE GENERATION ROUTINE.  THIS ROUTINE USES A 15 BIT SHIFT
  56. ;       REGISTER LEFT JUSTIFIED IN THE VARIABLE "NSTATE".  AFTER THE STATE
  57. ;       IS LOADED, IT IS CHECKED TO SEE IF IT IS NORMALIZED.  IF IT IS
  58. ;       NORMALIZED (TOP TWO BITS ARE DIFFERENT), A 1 IS SET AS THE INPUT
  59. ;       TO THE SHIFT REGISTER AND THE REGISTER IS SHIFTED AND SAVED.
  60. ;
  61. ;         B23     B22                            B9      B8
  62. ;        ______________________________________________
  63. ;       | S14   | S13 |                        | S0   |
  64. ;       |       |     |      . . .             |      |<----------
  65. ;       |_______|_____|________________________|_______          |
  66. ;           |      |                                             |
  67. ;            \    /                                              |
  68. ;              XOR                                               |
  69. ;               \_________________________________________________
  70. ;
  71. ;
  72. ;       ASSUMES SCALING MODE IS OFF
  73. ;
  74. NOISE                                   ;DO NOISE GENERATION LOOP
  75.         CLR     B       X:<NSTATE,A     ;GET A ZERO IN B
  76.         TST     A   #>$000001,X0        ;CHECK A, GET A 1 IN LSB POSITION
  77.         TNR     X0,B                    ;IF NORMALIZED, THEN XOR=1
  78.         ADD     B,A                     ;SET LSB
  79.         ASL     A                       ;SHIFT BITS
  80.         MOVE    A1,X:<NSTATE            ;SAVE STATE
  81.         RTS                             ;RETURN WITH STATE
  82.  
  83.         END
  84.